package com.chenfan.mcn.model.dto;

import cn.hutool.core.util.ArrayUtil;
import com.chenfan.mcn.config.UserVoContextHolder;
import com.chenfan.mcn.model.StarBasicData;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;

import java.util.List;

/**
 * @Author liuyang
 * @Date 2021/1/8
 * @Time 9:49
 * @Version V1.0
 **/
@EqualsAndHashCode(callSuper = true)
@Data
public class StarBasicDataSearchDTO extends AbstractMcnPrivilegeDTO<StarBasicData> {

    /**
     * 红人ID
     */
    private String starCode;

    /**
     * 红人类型
     */
    private Integer starType;

    /**
     * 红人姓名
     */
    private String starName;

    /**
     * 红人经纪人id
     */
    private Long starAgentId;

    /**
     * 红人经纪人名称
     */
    private String starAgentName;

    /**
     * 红人昵称
     */
    private String starNickname;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 微信
     */
    private String wechat;

    /**
     * 主要活跃平台
     */
    private List<String> mainActivePlatforms;

    /**
     * 性别(0-男，1-女)
     */
    private Integer gender;

    /**
     * 是否签约(1-是，0-否)
     */
    private Integer isSign;

    /**
     * 状态（0-启用，1-禁用）
     */
    private Integer starStatus;

    /**
     * 创建人
     */
    private String createName;

    /**
     * 平台昵称
     */
    private String platNickName;

    /**
     * 排除的红人ID集合
     */
    private List<Long> excludeStarIds;

    /**
     * 执行人id
     */
    private Long executorId;

    @Override
    protected void extendUserPrivilege(StringBuilder sb) {
        if (CollectionUtils.isNotEmpty(this.getUserIds())) {
            sb.append(" AND " + this.getAlias()).append("star_agent_id IN (").append(ArrayUtil.join(this.getUserIds().toArray(), ",")).append(")");
        } else {
            sb.append(" AND " + this.getAlias()).append("star_agent_id = ").append(ObjectUtils.defaultIfNull(UserVoContextHolder.getUserId(), -1L));
        }
    }
}
